﻿// ----------------------------------------------------------------------------
// noncopyable.h
// ----------------------------------------------------------------------------
/*
 Description:
 コピー不可能な属性を持つクラスのベースクラス. 
 
 ----------------------------------------------------------------
 使い方.
 
 インスタンスをコピーされたくないクラスに対してこのクラスをprivate継承する. 
 例えば、以下のDeviceクラスはコピー不可能な属性を持つ. 
 
 このインスタンスをコピーしたときにエラーが発生するので、使用者へコピー不可であることを説明することが出来る. 
 
 class FooDevice : private ::fw::NonCopyable
 {
 ...
 };
 
 */
#pragma once

namespace fw
{
    /**
     * コピー不可属性ベースクラス
     */
    class NonCopyable
    {
    protected:
        
         NonCopyable()
        {
        }
        
        ~NonCopyable()
        {
        }
        
    private:
        
        /* 下記のメソッドは実装されていない. */
        NonCopyable			( const NonCopyable& );
        
        void operator =		( const NonCopyable& );
        
    }; /* class NonCopyable */
    
} /* namespace fw */
